package com.xlh.virtualization.service;


import com.xlh.virtualization.domain.Image;
import com.xlh.virtualization.po.ImageSavePO;

import java.util.List;

/**
 * @author cheer
 */
public interface ImageAllocationImageService {

    /**
     * 基于指定容器保存新的镜像
     *
     * @param userId      用户Id
     * @param isAdmin     用户是否为管理员
     * @param imageSavePO 保存镜像参数
     * @return 镜像Id
     */
    Long saveImage(Long userId, Boolean isAdmin, ImageSavePO imageSavePO);

    /**
     * 覆盖指定镜像
     *
     * @param userId      用户Id
     * @param imageId     镜像Id
     * @param imageSavePO 保存镜像参数
     */
    void coverImage(Long userId, Long imageId, ImageSavePO imageSavePO);

    /**
     * 查询指定教师可见的镜像列表
     *
     * @param userId     用户Id
     * @param excludeGpu 是否排除gpu镜像
     * @return 镜像列表
     */
    List<Image> listTeacherVisibleImages(Long userId, Boolean excludeGpu);

    /**
     * 查询管理员可见的镜像列表
     *
     * @param excludeGpu 是否排除gpu镜像
     * @return 镜像列表
     */
    List<Image> listAdminVisibleImages(Boolean excludeGpu);

    /**
     * 查询镜像是否为指定用户创建的
     *
     * @param imageId 镜像Id
     * @param userId  用户Id
     * @return 如果是用户创建的返回true，否则返回false
     */
    Boolean isImageOwner(Long imageId, Long userId);

}
